home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 6
/
Aminet 6 - June 1995.iso
/
Aminet
/
dev
/
amos
/
PrgCollection.lha
/
FirePowerEdit.AMOS
/
FirePowerEdit.amosSourceCode
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
AMOS Source Code
|
1994-03-12
|
36.2 KB
|
1,073 lines
' *****************************************************
' * *
' * Fire Power Level Map Editor Deluxe *
' * *
' * Written by C. Hodges *
' * *
' * Copyright 1992 by C. Hodges. ALL RIGHTS RESERVED! *
' * *
' *****************************************************
Close Workbench : Close Editor : Request Off : Show On : Hide
Dim B(19,3),U(92),C(48),Z(3,14,1),S(48),I$(31),DT(10,1)
Global OLFI,VERZ,U(),ERN
OLDDIR$=Dir$
Screen Open 0,320,33,2,0
Curs Off : Palette 0,0 : Paper 0 : Pen 1
Centre "PRESS LEFT BUTTON TO RUN THE EDITOR" : Print
Print : Centre "OR RIGHT BUTTON FOR INSTRUCTIONS"
Screen Display 0,128,130,,
Fade 1,0,$FFF
Repeat : M=Mouse Key : Until M
On Error Proc HANDLER
Fade 1 : Wait 16 : Screen Close 0
If M=2 Then Gosub ANLEITUNG
If Exist("FIREPOWER:")=0 Then INSERT["FIREPOWER:","PLEASE INSERT FIREPOWER IN ANY DRIVE!"]
Unpack 7 To 0 : Show
Dir$="FIREPOWER:MapP2/" : F$="FIREPOWER:MapP2/T1"
Screen Hide 0
Screen Open 1,320,72,32,0
For A=0 To 15 : Colour A,0 : Next
Curs Off : Flash Off : Cls 0
Screen Copy 0,0,0,320,72 To 1,0,0
Screen Copy 0,0,72,320,108 To 0,0,0
Screen 0
For C=0 To 48
X=C : If X>39 Then Y=8 : X=X-40 Else Y=0
Get Cblock C+1,X*8,Y,8,8
Next
Screen Open 2,320,16,16,0 : Curs Off : Flash Off : Get Palette 0 : Cls 0
Screen Hide 2 : Screen Copy 0 To 2
Screen Open 0,320,16,16,0 : Curs Off : Flash Off : Get Palette 2 : Cls 0
Screen Hide 0 : Screen Copy 2 To 0
Screen Open 2,512,512,16,0
For A=0 To 15 : Colour A,0 : Next
Curs Off : Flash Off : Cls 8
Screen Display 2,128,123,320,172
Screen 0
A$="B: P ; L X=0 ; L Y=0 ; Anim 0,(3,1) ; I YM<123 J B ; "
A$=A$+"A: P ; L X=XM+R0/8*8-2-R0 ; L Y=R1+YM-124/8*8+121-R1 ; I YM<123 J B ; J A ; "
Amal 1,A$
Channel 1 To Sprite 1
A$="Let X=134 ; Let Y=113 ; L RC=2; Anim 0,(1,1) ; "
A$=A$+"B: L RA=X; L RB=Y; PP; I XM>X J R ; "
A$=A$+" I XM<X J L ; "
A$=A$+"A: I X<138 J C ; "
A$=A$+" I X>270 J D ; "
A$=A$+" J B ; "
A$=A$+"R: Let X=X+1 ; L RC=2; Anim 0,(2,1) ; J A ; "
A$=A$+"L: Let X=X-1 ; L RC=-2; Anim 0,(1,1) ; J A ; "
A$=A$+"C: Let X=138 ; J B ; "
A$=A$+"D: Let X=270 ; J B ; "
Channel 2 To Sprite 2
Amal 2,A$
A$="Let X=381 ; Let Y=55 ; Anim 0,(8,5)(7,4)(6,3)(5,2)(4,1)(5,2)(6,3)(7,4) ; "
A$=A$+"A: P ; Let X=381+R2 ; Let Y=55+R3 ; "
A$=A$+" I R0<R2 J L ; "
A$=A$+" I R0>R2 J R ; "
A$=A$+"B: I R1<R3 J U ; "
A$=A$+" I R1>R3 J D ; "
A$=A$+" J A ; "
A$=A$+"L: Let R2=R2-1 ; J B ; "
A$=A$+"R: Let R2=R2+1 ; J B ; "
A$=A$+"U: Let R3=R3-1 ; J A ; "
A$=A$+"D: Let R3=R3+1 ; J A ; "
Channel 3 To Sprite 3
Amal 3,A$
A$="A: L X=0; I K1=-1 J B; PP; J A; "
A$=A$+"B: L R0=RC; L X=R0*4+RA; L Y=RB+1; "
A$=A$+"C: P; L X=X+R0; "
A$=A$+" I X<129 J A; "
A$=A$+" I X>277 J A; "
A$=A$+" J C; "
Sprite 4,0,0,11
Channel 4 To Sprite 4
Amal 4,A$
CM=2 : Gosub CM
Limit Mouse 128,50 To 447,295
OLFI=1 : VERZ=2 : Restore DATTABLE
For A=1 To 19 : Read B(A,0),B(A,1),B(A,2),B(A,3) : Next
For A=0 To 92 : Read U(A) : Next
For A=0 To 48 : Read C(A) : Next
For A=1 To 3 : Read B : For D=0 To 1 : For C=1 To B : Read Z(A,C,D) : Next : Next : Next
For A=1 To 48
For B=1 To 92
If U(B)=A Then S(A)=B : Exit
Next
Next
For A=0 To 31 : Read I$(A) : Next
Reserve As Work 6,4096
OX=0 : OY=0 : E=1
Def Scroll 1,220,18 To 227,28,-1,0 : Def Scroll 2,219,18 To 226,28,1,0
Screen 1 : Fade 1 To 0 : Wait 18 : Screen 2 : Fade 1 To 0 : Wait 18
Gosub RESETCOLOR
Amal On
T[-1,"WELCOME!!!"]
Do
X=X Screen(1,X Mouse) : Y=Y Screen(1,Y Mouse) : B=0 : MM=M : M=Mouse Key
If M<>0 and Y<62 Then Gosub BUT : If B>0 Then Gosub MENUBUTTON
If Y>72 Then CM=6 : BX=(X+OX mod 8)/8+OX/8 : BY=((Y-74)+(OY mod 8))/8+OY/8 Else CM=2
If CM=6 and M=2 and(BXA<>BX or BYA<>BY or MM=0) Then Gosub LOESCHEN
If CM=6 and M=1 and(BXA<>BX or BYA<>BY or MM=0) and TYPE>0 Then Gosub SETBUILD
If X<10 Then OX=Max(Min(OX-2,192),0)
If X>310 Then OX=Max(Min(OX+2,192),0)
If Y<10 Then OY=Max(Min(OY-2,340),0)
If Y>235 Then OY=Max(Min(OY+2,340),0)
Amreg(1,0)=OX mod 8 : Amreg(1,1)=OY mod 8
Amreg(3,0)=BX : Amreg(3,1)=BY
If OX<>OXA or OY<>OYA Then BXA=BX : BYA=BY : OXA=OX : OYA=OY : Wait Vbl : Screen Offset 2,OX,OY
Gosub CM : If BXA<>BX or BYA<>BY Then Gosub TILEINFO
Loop
End
ANLEITUNG:
Screen Open 0,320,190,4,0
Curs Off : Flash Off : Paper 0 : Pen 3 : Cls 0
Palette 0,0,0,0 : Print
Centre "WELCOME TO THE WORLD'S BEST" : Print : Print : Pen 2
Centre "FIREPOWER LEVEL MAP EDITOR DELUXE" : Print : Print
Centre "VERSION 1.78" : Print : Print : Pen 3
Centre "WRITTEN BY C. HODGES" : Print : Print
Centre "IN 1992!" : Print : Print : Print : Pen 1
Print "THE REQUIREMENTS: - A COPY OF FIREPOWER"
Print " - AT LEAST 1 MB MEMORY";
Print " - AND THIS HERE." : Print : Print : Print : Print
Print "ARE YOU READY TO GO ON?" : Print
Print "IF YOU ARE PRESS MOUSE BUTTON"
Print "TO BEGIN WITH THE MENU BAR...";
Fade 2,0,$FFF,$FF0,$F0
Repeat : Until Mouse Key=0
Repeat : Until Mouse Key
Fade 2 : Wait 32
Unpack 7 To 0
Screen Hide 0
Screen Open 1,320,256,16,0
Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 0
Screen Display 1,,121,,
Get Palette 0
Screen 0 : Screen Display 0,,40,,72
For A=0 To 15 : Colour A,0 : Next
Screen Show 0
Fade 2 To 1 : Wait 32
Screen 1 : For A=0 To 15 : Colour A,0 : Next
Pen 5 : Centre "THE BUTTONS" : Print
Centre "-----------" : Print : Print : Pen 1
Print "YOU CAN CLICK AT ANY BUTTON WITH ";Pen$(3);"LEFT"
Print "MOUSE BUTTON";Pen$(1);" OR ";Pen$(4);"RIGHT MOUSE BUTTON";Pen$(1);"."
Print : Print "NOW I'LL EXPLANE ALL BUTTONS (L & R)..." : Print
Print Pen$(2);"LOAD MAP ";Pen$(3);"-LOAD A SAVED MAP."
Print " ";Pen$(4);"-LOAD THE MAP LAST SAVED/LOADED"
Print Pen$(2);"SAVE MAP ";Pen$(3);"-SAVE A CREATED MAP."
Print " ";Pen$(4);"-SAVE AS THE MAP LAST LOADED." : Print
Print Pen$(2);"CLEAR MAP";Pen$(3);"-NO EFFECT."
Print " ";Pen$(4);"-CLEAR THE MAP." : Print
Print Pen$(2);"QUIT OUT ";Pen$(3);"-PRESS 3 TIMES TO QUIT"
Print " ";Pen$(4);"-SAME AS LEFT BUTTON" : Print : Print
Pen 6 : Centre "PRESS MOUSE BUTTON..."
Fade 2,0,$FFF,$FF0,$F0,$F00,$F0F,$88F
Repeat : Until Mouse Key=0
Repeat : Until Mouse Key
Fade 2 : Wait 32 : Cls
Print Pen$(2);"SET TREES";Pen$(3);"-SET TREES ON EMPTY FIELDS."
Print " ";Pen$(4);"-REMOVE ALL TREES." : Print
Print Pen$(2);"SET ROADS";Pen$(3);"-SELECTS ROAD-CHARSET,SEE LATER";
Print " ";Pen$(4);"-SAME AS LEFT BUTTON." : Print
Print Pen$(2);"SET WALLS";Pen$(3);"-SELECTS WALL-CHARSET."
Print " ";Pen$(4);"-SAME AS LEFT BUTTON." : Print
Print Pen$(2);"SET BUILD";Pen$(3);"-SELECTS BUILDING-CHARSET."
Print " ";Pen$(4);"-SAME AS LEFT BUTTON." : Print
Print Pen$(2);"FLIP COL.";Pen$(3);"-FLIP BROWN AND GREEN PLAYER"
Print " ";Pen$(4);"-SAME AS LEFT BUTTON." : Print
Print Pen$(2);"VIEW MAP ";Pen$(3);"-SCROLL THROUGH THE MAP."
Print " ";Pen$(4);"-VIEW THE HOLE MAP." : Print
Print Pen$(2);"? BUTTON ";Pen$(3);"-ABOUT THIS EDITOR."
Print " ";Pen$(4);"-GIVES AN INFO OF THE MAP." : Print
Pen 6 : Centre "PRESS MOUSE BUTTON..."
Fade 2,0,$FFF,$FF0,$F0,$F00,$F0F,$88F
Repeat : Until Mouse Key=0
Repeat : Until Mouse Key
Fade 2 : Wait 32 : Cls
Print Pen$(2);"ARROW TO THE LEFT ";Pen$(3);"-PREVOUS CHAR."
Print " ";Pen$(4);"-SAME AS LEFT BUTTON." : Print
Print Pen$(2);"ARROW TO THE RIGHT";Pen$(3);"-NEXT CHAR."
Print " ";Pen$(4);"-SAME AS LEFT BUTTON." : Print
Print Pen$(2);"GREEN BUTTON ";Pen$(3);"-SELECT GREEN CHARSET.";
Print " ";Pen$(4);"-SAME AS LEFT BUTTON." : Print
Print Pen$(2);"BROWN BUTTON ";Pen$(3);"-SELECT BROWN CHARSET.";
Print " ";Pen$(4);"-SAME AS LEFT BUTTON." : Print
Print Pen$(2);"CURSOR BUTTONS ";Pen$(3);"-SLOW SCROLLING."
Print " ";Pen$(4);"-FASTER SCROLLING."
Print " ";Pen$(5);"-FASTEST SCROLLING." : Print
Print Pen$(1);"IF YOU PRESS THE VIEW MAP BUTTON WITH"
Print "THE RIGHT MOUSE BUTTON AND THEN PRESS"
Print "IT AGAIN YOU WILL SEE THE LITTLE MAP"
Print "IN THE CORNER ZOOMED IN." : Print
Pen 6 : Centre "PRESS MOUSE BUTTON..."
Fade 2,0,$FFF,$FF0,$F0,$F00,$F0F,$88F
Repeat : Until Mouse Key=0
Repeat : Until Mouse Key
Fade 2 : Wait 32 : Cls
Screen 0 : Fade 2 : Wait 32 : Screen Close 0
Unpack 8 To 0
Screen Hide 0
Screen Display 0,128,40,,138
Screen 1
Screen Display 1,,179,,
Get Palette 0
Screen 0 : For A=0 To 15 : Colour A,0 : Next
Screen Show 0
Fade 2 To 1 : Wait 32
Screen 1
For A=0 To 15 : Colour A,0 : Next
Pen 5 : Centre "THE FILE SELECTOR" : Print
Centre "-----------------" : Print : Print : Pen 1
Print "AS YOU CAN SEE THERE ARE THREE BUTTONS"
Print "AT THE TOP OF THE REQUESTER: THE FIRST"
Print "SELECTS THE ONE PLAYER LEVEL MAPS, THE"
Print "SECOND THE TWO PLAYER MAPS AND THE"
Print "THIRD THE MODEM MAPS. IF YOUR DISK IS"
Print "FULL YOU CAN LOAD OR SAVE A MAP ONTO AN"
Print "EXTRA DISK BY CLICKING ON EXTRA!"
Print "IF YOU HAVE PRESSED ONE OF THE FOUR"
Print "BUTTONS, THE DIRECTORY WILL BE READ UP!"
Print : Print : Pen 6 : Centre "PRESS MOUSE BUTTON..."
Fade 2,0,$FFF,$FF0,$F0,$F00,$F0F,$88F
Repeat : Until Mouse Key=0
Repeat : Until Mouse Key
Fade 2 : Wait 32 : Cls
Pen 1 : Print "THEN YOU CAN SELECT A MAP BY CLICKING ON";
Print "IT OR BROWSE THROUGH THE MAPS WITH THE"
Print "ARROW BUTTONS OR USING THE SLIDER BAR." : Print
Print "THERE ARE THREE TYPES OF MAPS:"
Print "- ";Pen$(2);"GAME MAPS";Pen$(1);" : THESE ARE ACTUALLY USED BY";
Print " THE GAME!"
Print "- ";Pen$(4);"SPARE MAPS";Pen$(1);": THESE ARE NOT USED BUT CAN";
Print " BE SWAPPED AND DELETED!"
Print "- ";Pen$(3);"NO MAPS";Pen$(1);" : THESE ARE NOT EXISTING BUT";
Print " SELECTABLE FOR SAVING!"
Print : Print : Print : Pen 6 : Centre "PRESS MOUSE BUTTON..."
Fade 2,0,$FFF,$7F7,$F,$FB3,$F0F,$88F
Repeat : Until Mouse Key=0
Repeat : Until Mouse Key
Fade 2 : Wait 32 : Cls
Pen 1 : Print "AT THE BOTTOM THERE ARE SEVERAL BUTTONS:";
Print "- ";Pen$(2);"LOAD";Pen$(1);"/";Pen$(4);"SAVE";Pen$(1);": LOADS/SAVES THE SELECTED"
Print " GAME OR SPARE MAP."
Print "- ";Pen$(5);"DELETE";Pen$(1);" : DELETES THE SELECTED SPARE"
Print " MAP THE FROM DISK."
Print "- ";Pen$(4);"SWAP";Pen$(1);" : SWAPS THE SELECTED MAP"
Print " AGAINST ANOTHER."
Print "- ";Pen$(3);"SHOW";Pen$(1);" : DISPLAYS THE SELECTED GAME"
Print " OR SPARE MAP."
Print "- ";Pen$(3);"SHOW ALL";Pen$(1);" : DISPLAYS ALL MAPS IN THE"
Print " ACTUAL DIRECTORY."
Print "- ";Pen$(5);"CANCEL";Pen$(1);" : ABORTS LOAD/SAVE REQUESTER.";
Print "- X : ABORTS SWAPPING."
Print : Pen 6 : Centre "PRESS MOUSE BUTTON..."
Fade 2,0,$FFF,$7F7,$F,$FB3,$C00,$88F
Repeat : Until Mouse Key=0
Repeat : Until Mouse Key
Fade 2 : Wait 32 : Cls
Screen 0 : Fade 2 : Wait 32 : Screen Close 0
Screen Display 1,128,40,320,256
Pen 5 : Centre "HOW TO CREATE A MAP" : Print
Centre "--------------------" : Print : Print
Print Pen$(1);"FIRST YOU HAVE TO CLICK ON SET ROADS,"
Print "SET WALLS OR SET BUILDINGS: A CHAR"
Print "APPEARS BETWEEN THE TWO GREEN ARROWS."
Print "NOW YOU CAN CLICK USING THE LEFT MOUSE"
Print "BUTTON AT THE SCREEN BELOW THE MENU"
Print "AND THE CHAR WILL BE COPIED TO IT."
Print "THE RIGHT BUTTON REMOVES IT."
Print "THE CHAR CAN BE GREEN OR BROWN, UNLESS"
Print "YOU HAVE CLICKED ON SET ROADS."
Print "TO CHANGE THE COLOR PRESS THE GREEN"
Print "OR BROWN BUTTON."
Print "YOU CAN ONLY SEE A SMALL PART OF THE"
Print "MAP AT A TIME, BUT YOU CAN SCROLL"
Print "WITH THE CURSOR BUTTONS. IF YOU GO"
Print "TO THE BORDER OF THE SCREEN, IT"
Print "WILL SCROLL AUTOMATICALLY."
Print : Print : Print : Print : Print
Pen 6 : Centre "PRESS MOUSE BUTTON..."
Fade 2,0,$FFF,$FF0,$F0,$F00,$F0F,$88F
Repeat : Until Mouse Key=0
Repeat : Until Mouse Key
Fade 2 : Wait 32 : Cls
Pen 5 : Centre "REMEMBER" : Print
Centre "--------" : Print : Print
Print Pen$(1);"YOU MUST HAVE ONE OR MORE DEPOTS FOR"
Print "EACH PLAYER OR FIREPOWER WILL CRASH."
Print "AS WITH DEPOTS A STARTPOINT MUST EXIST!"
Print "IF YOU MAKE A MAP AGAINST THE COMPUTER,"
Print "REMEMBER THE COMPUTER IS GREEN AND YOU"
Print "DON'T NEED A STARTPOINT FOR HIM OR A"
Print "DEPOT FOR THE BROWN PLAYER."
Print "THE MAP IS ROUND, SO IF YOU GO OUT OF"
Print "THE LEFT EDGE YOU WILL COME OUT AT THE"
Print "RIGHT EDGE AND VICE VERSA." : Print
Print "THIS EDITOR IS SHAREWARE SO IF YOU USE"
Print "IT GIVE ME SOME MONEY..." : Print : Print
Pen 3 : Centre "SPREAD THE DISK, AND NOT THE WORD!" : Print : Print
Print : Pen 4 : Centre "HAVE FUN CREATING YOUR OWN MAPS!"
Print : Print : Print
Pen 6 : Centre "PRESS MOUSE BUTTON TO START!"
Fade 2,0,$FFF,$FF0,$F0,$F00,$F0F,$88F
Repeat : Until Mouse Key=0
Repeat : Until Mouse Key
Fade 2 : Wait 32 : Cls
Screen Close 1
Screen 0 : Fade 2 : Wait 32 : Screen Close 0
Return
TILEINFO:
BXA=BX : BYA=BY : C=U(Peek(Start(6)+BY+BX*64)) : G=1 : If C>14 Then G=7
If C>31 Then C=C-17 : G=5
T[-G,I$(C)] : Return
MENUBUTTON:
If B=1 Then Gosub LADEMAP
If B=2 Then Gosub SPEICHEREMAP
If B=3 Then Gosub LOESCHEMAP
If B=4 Then Gosub QUIT Else If QUIT>0 Then QUIT=0 : T[0,""]
If B=5 Then Gosub SETTREES
If B=6 Then ZX=0 : Z=1 : TYPE=1 : HOE=14 : Gosub ZEIGEZEICHEN
If B=7 Then ZX=0 : Z=1 : TYPE=2 : HOE=9 : Gosub ZEIGEZEICHEN
If B=8 Then ZX=0 : Z=1 : TYPE=3 : HOE=8 : Gosub ZEIGEZEICHEN
If B=9 Then Gosub FLIP
If B=10 Then Gosub ZEIGEMAP : M=0
If B=11 Then Gosub INFO : M=0
If B=12 Then ZX=1 : Add Z,-1,1 To HOE : Gosub ZEIGEZEICHEN
If B=13 Then ZX=0 : Add Z,1,1 To HOE : Gosub ZEIGEZEICHEN
If B=14 and E=0 and TYPE>1 Then E=1 : Gosub ZEIGEZEICHEN
If B=16 and E=1 and TYPE>1 Then E=0 : Gosub ZEIGEZEICHEN
Return
FLIP:
CM=3 : Gosub CM
T[-12,"PLEASE WAIT"]
Screen 2
For Y=0 To 63 : For X=0 To 63 : C=U(Peek(Start(6)+Y+X*64))
D=C : If C>14 and C<32 Then D=D+17
If C>31 Then D=D-17
Poke Start(6)+Y+X*64,S(D) : If D>14 Then Put Cblock D+1,X*8,Y*8
Next : Next
Screen 1
For Y=0 To 63 : For X=0 To 63 : C=U(Peek(Start(6)+Y+X*64)) : If C>14 Then Plot 252+X,4+Y,C(C)
Next : Next
T[0,""] : Gosub BLITZ
CM=2 : Gosub CM
Return
ABOUT:
XX=X Sprite(2) : YY=Y Sprite(2) : Sprite 2,0,0, : Sprite 3,0,0, : Sprite 4,0,0,
Amal Freeze
Screen 1 : Fade 1 : Wait 18 : Screen 2 : Fade 1 : Wait 18
Screen Open 3,320,256,4,0
Curs Off : Flash Off : Paper 0 : Pen 1 : Cls : Hide
Palette 0,0,0,0
Home : Pen 2 : Print : Centre "The Fire-Power-Level-Map-Editor de luxe"
Print : Print : Centre "Version 1.78"
Pen 1 : Print : Print : Centre "Written by C. Hodges"
Print : Print : Centre "Using AMOS Version 1.2"
Print : Print : Centre "Graphics by C. Hodges"
Print : Print : Centre "Block-Graphics by P. Hodges"
Pen 2 : Print : Print : Print : Centre "This is Share Ware!!!"
Pen 1 : Print : Print : Centre "After 3 times saving a map"
Print : Centre "you must realize that you"
Print : Centre "need this tool and so you have"
Print : Centre "to send me 15 DM to get the newest"
Print : Centre "update and pay for this great tool!"
Pen 3 : Print : Print : Centre "My address: "
Print : Print : Centre "Chris Hodges "
Print : Centre "Kennedystr. 8 "
Print : Centre "8039 Puchheim "
Print : Centre "West Germany! "
Print : Print : Centre "Tel. 089/804758"
Fade 1,0,$FFF,$F00,$F0
While Mouse Key=0 : Wend
Fade 1 : Wait 18
Pen 1 : Cls : Print : Centre "Version 2.0 will have new features like:"
Pen 3 : Print : Print : Centre "- Automatic Road-and Wall settings"
Print : Centre " (like SimCity(TM)) "
Print : Print : Centre "- Block functions (Cut/Copy/Paste)"
Print : Print : Centre "- Flip and Rotate functions "
Print : Print : Centre "- A Very Good Hardcopy Routine "
Print : Print : Centre "- Bigger Block-Graphics (12*12) "
Pen 1 : Print : Print : Print : Print : Centre "If you have any suggestions to"
Print : Centre "later Versions or questions"
Print : Centre "write to me or telephone me!"
Pen 2 : Print : Print : Print : Print : Centre "Have fun and create your own maps!!!"
Fade 1,0,$FFF,$F00,$F0
While Mouse Key=0 : Wend
Fade 1 : Wait 18
Screen Close 3
Screen 1 : Fade 1 To 0 : Wait 18 : Screen 2 : Fade 1 To 0 : Wait 18
Sprite 2,XX,YY, : Amal On : Show
Gosub RESETCOLOR
Return
INFO:
If M=1 Then Goto ABOUT
T[-12,"PLEASE WAIT"]
CM=3 : Gosub CM
F=0 : T=0 : R=0
For A=0 To 10 : DT(A,0)=0 : DT(A,1)=0 : Next
For A=0 To 4095 : C=U(Peek(A+Start(6))) : If C>31 Then D=0 : C=C-17 Else D=1
Gosub LOC : Next
T[0,""]
XX=X Sprite(2) : YY=Y Sprite(2) : Sprite 2,0,0, : Sprite 3,0,0, : Sprite 4,0,0,
Amal Freeze
Screen 1 : Fade 1 : Wait 18 : Screen 2 : Fade 1 : Wait 18
Screen Open 3,320,200,4,0
Curs Off : Flash Off : Paper 0 : Pen 1 : Cls : Hide
Palette 0,0,0,0
Home : Print : Centre "Info of current Playfield"
Print : Print
Print "Width and height: 64*64 Blocks"
Print "Looking at :";OX/8;" /";OY/8;" -";OX/8+39;" /";OY/8+21
Print
Print "Free :";F
Print "Roads:";R
Print "Trees:";T
Pen 2 : D=0 : Locate 0,11 : Print "Green Player" : Gosub INFOPLAYER
Pen 3 : D=1 : Locate 20,11 : Print "Brown Player" : Gosub INFOPLAYER
Fade 1,0,$FFF,$F0,$F80
While Mouse Key=0 : Wend
Fade 1 : Wait 18 : Screen Close 3
Screen 1 : Fade 1 To 0 : Wait 18 : Screen 2 : Fade 1 To 0 : Wait 18
Sprite 2,XX,YY, : Amal On : Show
Gosub RESETCOLOR
CM=2 : Gosub CM
Return
LOC:
If C=0 Then Inc F : Return
If C=1 or C=2 or C=3 Then Inc T : Return
If C>3 and C<15 Then Inc R : Return
If C=15 Then Inc DT(0,D) : Return
If C=16 or C=17 Then Inc DT(1,D) : Return
If C>17 and C<24 Then Inc DT(2,D) : Return
If C=24 or C=25 or C=27 Then Inc DT(3,D) : Return
If C=26 Then Inc DT(4,D) : Return
If C>27 Then Inc DT(C-23,D)
Return
INFOPLAYER:
Locate D*20,13 : Print "Walls :";DT(1,D)
Locate D*20,14 : Print "Cannons :";DT(2,D)
Locate D*20,15 : Print "Gates :";DT(0,D)
Locate D*20,16 : Print "Bunker :";DT(3,D)
Locate D*20,17 : Print "Jails :";DT(4,D)
Locate D*20,18 : Print "Fuels :";DT(5,D)
Locate D*20,19 : Print "Lazarets:";DT(6,D)
Locate D*20,20 : Print "Depots :";DT(8,D);
If DT(8,D)=0 Then Pen 1 : Print "-Warning" : Pen 2+D Else Print
Locate D*20,21 : Print "Starts :";DT(7,D);
If DT(7,D)=0 Then Pen 1 : Print "-Warning" : Pen 2+D Else Print
Locate D*20,22 : Print "--------------"
R=0 : For A=0 To 8 : R=R+DT(A,D) : Next
Locate D*20,23 : Print "Total :";R
Return
LOESCHEN:
BXA=-1 : Poke Start(6)+BY+BX*64,0 : Plot 252+BX,4+BY,C(0) : Screen Copy 0,0,0,8,8 To 2,BX*8,BY*8
Return
SETBUILD:
C=Z(TYPE,Z,E) : Poke Start(6)+BY+BX*64,S(C) : Plot 252+BX,4+BY,C(C)
If C>39 Then YY=8 : C=C-40 Else YY=0
BXA=-1 : Screen Copy 0,C*8,YY,C*8+8,YY+8 To 2,BX*8,BY*8
Return
BIGMAP:
Screen 1 : Fade 1 : Wait 18 : Screen 2 : Fade 1 : Wait 18
Screen Open 3,320,256,16,0
Curs Off : Flash Off : Cls 8 : Hide
For A=0 To 15 : Colour A,0 : Next
Fade 1 To 0 : Zoom 2,0,0,511,511 To 3,0,0,320,256 : D=0
Repeat
If Mouse Key=2 and D=0 Then Zoom 1,252,4,316,68 To 3,0,0,320,256 : D=1
If Mouse Key=2 and D=1 Then Zoom 2,0,0,511,511 To 3,0,0,320,256 : D=0
Until Mouse Key=1
Fade 1 : Wait 18 : Screen Close 3
Screen 1 : Fade 1 To 0 : Wait 18 : Screen 2 : Fade 1 To 0 : Wait 18
Sprite 2,XX,YY, : Amal On : Show
Gosub RESETCOLOR
Return
RESETCOLOR:
Screen 1 : Colour 21,$121 : Colour 22,$252 : Colour 23,$575 : Colour 25,0
Colour 17,0 : Colour 18,0 : Colour 19,$FFF
Return
ZEIGEMAP:
G=0 : Amal Freeze : XX=X Sprite(2) : YY=Y Sprite(2)
Sprite 2,0,0, : Sprite 3,0,0, : Sprite 4,0,0,
If M=2 Then Goto BIGMAP
For A=123 To 41 Step -2
Wait Vbl : Screen Display 2,128,A,320,172+G : Screen Offset 2,OX,OY
G=G+2 : If G+OY>340 Then OY=OY-2
Next
G=G-2 : OY=OY+2
Repeat
X=X Screen(1,X Mouse) : Y=Y Screen(1,Y Mouse)
If X<80 Then OX=Max(OX-2,0)
If X>240 Then OX=Min(OX+2,192)
If Y<80 Then OY=Max(OY-2,0)
If Y>165 Then OY=Min(OY+2,258)
If X<40 Then OX=Max(OX-2,0)
If X>280 Then OX=Min(OX+2,192)
If Y<40 Then OY=Max(OY-2,0)
If Y>205 Then OY=Min(OY+2,258)
Wait Vbl : Screen Offset 2,OX,OY
Until Mouse Key<>0
For A=41 To 123 Step 2
Wait Vbl : Screen Display 2,128,A,320,172+G
If G>0 Then G=G-2
Next
Sprite 2,XX,YY,
Amal On
Return
CM:
If CM=CMA Then Return
If CM<>6 Then Change Mouse CM
Screen 1 : If CM=2 Then Colour 17,0 : Colour 18,0 : Colour 19,$FFF
If CM=3 Then Colour 17,$888 : Colour 18,$555 : Colour 19,$FFF : Amal Freeze 1
If CM=3 Then Sprite 1,0,0, : Screen 2 : Colour 17,$888 : Colour 18,$555 : Colour 19,$FFF
If CM=6
Colour 17,$666 : Colour 18,$666
Screen 2 : Colour 17,$FFF : Colour 18,$999 : Colour 19,$555
End If
If CMA=3 Then Amal On 1
CMA=CM : Screen 1
Return
ZEIGEZEICHEN:
C=Z(TYPE,Z,E)
D=C : G=1 : If C>14 Then G=7
If C>31 Then D=D-17 : G=5
T[-G,I$(D)]
If C>39 Then YY=8 : C=C-40 Else YY=0
For A=0 To 7
Scroll ZX+1 : Wait Vbl
If ZX=0 Then Screen Copy 0,C*8+A,YY,C*8+A+1,YY+8 To 1,226,18
If ZX=1 Then Screen Copy 0,C*8+7-A,YY,C*8+8-A,YY+8 To 1,219,18
Next
Return
LADEMAP:
If M=1 Then T$="LOAD" : Gosub FREQ
If F$="" Then Wait Vbl : Gosub BLITZ : T[-12,"FILE ERROR!"] : Return
CM=3 : Gosub CM
Bload F$,6
Ink 8 : Bar 252,4 To 315,67
T[-12,"PLEASE WAIT"]
Screen 2
For Y=0 To 63 : For X=0 To 63 : C=U(Peek(Start(6)+Y+X*64)) : Put Cblock C+1,X*8,Y*8 : Next : Next
Screen 1
For Y=0 To 63 : For X=0 To 63 : C=U(Peek(Start(6)+Y+X*64)) : If C>3 Then Plot 252+X,4+Y,C(C)
Next : Next
BXA=-1 : CM=2 : Gosub CM
T[0,""]
Gosub BLITZ
Return
SPEICHEREMAP:
If M=1 Then T$="SAVE" : Gosub FREQ
If F$="" Then Return
CM=3 : Gosub CM
ERN=0 : Bsave F$,Start(6) To Start(6)+4096 : If ERN Then T[-12,"SAVE ERROR!"]
CM=2 : Gosub CM
Gosub BLITZ
Return
LOESCHEMAP:
If M=1 Then T[-12,"PRESS RIGHT"] : Return
CM=3 : Gosub CM
T[-12,"PLEASE WAIT"]
For A=0 To 1023 : Loke Start(6)+A*4,0 : Next
Ink 8 : Bar 252,4 To 315,67
Screen 2 : Cls 8 : Screen 1
CM=2 : Gosub CM
T[0,""]
Gosub BLITZ
Return
QUIT:
If QUIT<2 Then T[-12,"SURE?"] : Inc QUIT : Return
T[-12,"BYE..."]
Pop : Screen 1 : Fade 1 : Wait 18 : Screen 2 : Fade 1 : Wait 18
Amal Off : Sprite Off
Screen Close 0
Screen Close 1
Screen Close 2
Dir$=OLDDIR$
End
DELTREES:
For Y=0 To 63 : For X=0 To 63
L=X*64+Y+Start(6) : If Peek(L)<5 and Peek(L)<>0 Then Poke L,0 : Put Cblock 1,X*8,Y*8
Next : Next
Return
FILTREES:
For Y=0 To 63 : For X=0 To 63
If Peek(X*64+Y+Start(6))=0 Then C=Rnd(2)+1 : Poke X*64+Y+Start(6),S(C) : Put Cblock C+1,X*8,Y*8
Next : Next
Return
SETTREES:
CM=3 : Gosub CM
T[-12,"PLEASE WAIT"]
Screen 2 : If M=2 Then Gosub DELTREES Else Gosub FILTREES
Screen 1 : CM=2 : Gosub CM
T[0,""]
Gosub BLITZ
Return
BLITZ:
Colour 0,$FFF : Boom : Fade 2,0
Return
FREQ:
XX=X Sprite(2) : YY=Y Sprite(2) : Amal Freeze
Wait Vbl : Sprite 2,0,0, : Sprite 3,0,0, : Sprite 4,0,0,
Sprite Update : Wait Vbl : Wait Vbl
FILREQ[Abs(T$="SAVE")]
F$=Param$
If F$<>"" Then If(Exist(F$)=0) and(T$="LOAD") Then F$=""
Sprite 2,XX,YY, : Amal On
Screen 1
Limit Mouse 128,50 To 447,295
Return
BUT:
B=0
For A=1 To 19
If X>B(A,0) and Y>B(A,1) and X<B(A,2) and Y<B(A,3) Then B=A : Exit
Next
If B=0 Then Return
Shoot
C1=Point(B(B,2),B(B,3))
C2=Point(B(B,0),B(B,1))
Ink C1 : Draw B(B,0),B(B,3)-1 To B(B,0),B(B,1)
Draw To B(B,2)-1,B(B,1)
Ink C2 : Draw B(B,0)+1,B(B,3) To B(B,2),B(B,3)
Draw To B(B,2),B(B,1)+1
If B=15 or B=17 or B=18 or B=19 Then Gosub MOVE
Repeat : Until Mouse Key=0
Ink C2 : Draw B(B,0),B(B,3)-1 To B(B,0),B(B,1)
Draw To B(B,2)-1,B(B,1)
Ink C1 : Draw B(B,0)+1,B(B,3) To B(B,2),B(B,3)
Draw To B(B,2),B(B,1)+1
Return
MOVE:
Repeat
M=Mouse Key
If B=17 Then OX=Max(Min(OX-M*4,192),0)
If B=19 Then OX=Max(Min(OX+M*4,192),0)
If B=15 Then OY=Max(Min(OY-M*4,340),0)
If B=18 Then OY=Max(Min(OY+M*4,340),0)
Wait Vbl : Screen Offset 2,OX,OY
Until M=0
Return
' Buttons
DATTABLE:
Data 2,21,76,30
Data 2,31,76,40
Data 2,41,76,50
Data 2,51,76,61
'
Data 77,21,151,30
Data 77,31,151,40
Data 77,41,151,50
Data 77,51,183,61
'
Data 152,21,197,30
Data 152,31,197,50
Data 184,51,197,61
'
Data 199,14,214,29
'Data 215,14,230,29
Data 231,14,246,29
Data 199,30,214,45
Data 215,30,230,45
Data 231,30,246,45
Data 199,46,214,61
Data 215,46,230,61
Data 231,46,246,61
' Table for Convertor
' 0 1 2 3 4 5 6 7 8 910 1112 13 141516
Data 0,0,1,2,3,10,9,11,7,0,6,12,8,13,14,4,5
Data 25,24,26,30,0,27,0,29,28,0,23,0,42,41
Data 43,47,0,44,0,46,45,0,40,0,18,17,19,15
Data 0,0,16,20,0
Data 21,0,0,0,0,0,0,0,0,0,0,0,0,0,35,34,36,32
Data 0,0,33,37,0,38,0,0
Data 0,0,0,0,0,0,0,0,0,22,0,39,0,31,0,0,48
' Color table for little map
Data 8,8,8,8,3,3,3,3,3,3,3,3,3,3,3
Data 2,2,2,10,10,10,10,10,10,7,7,7,7,7,7,9,9
Data 2,2,2,6,6,6,6,6,6,5,5,5,5,5,5,4,4
' Char table
Data 14,4,5,6,7,8,9,10,11,12,13,14,1,2,3
Data 4,5,6,7,8,9,10,11,12,13,14,1,2,3
Data 9,16,17,18,19,20,21,22,23,15
Data 33,34,35,36,37,38,39,40,32
Data 8,24,25,26,27,28,29,30,31,41,42,43,44,45,46,47,48
' Names of Tiles
Data "Empty","Big Tree","Small Tree","Medium Tree","- Road","| Road"
Data "Crossroad","Crossroad","Crossroad","Crossroad","Curve","Curve"
Data "Curve","Curve","Heli base","Gate","| Wall","- Wall","Cannon"
Data "Cannon","Cannon","Cannon","Cannon","Cannon","Bunker","Bunker"
Data "Jail","Bunker","Fuel","Lazared","Start Point","Flag Depot"
'
Procedure T[C,T$]
Ink 2 : Bar 154,63 To 245,70 : X=0
If C<0 Then X=46-Len(T$)*4
Ink Abs(C),2 : Text 154+X,69,T$
End Proc
Procedure FILREQ[SAV]
On Error Proc HANDLER
Hide : Unpack 8 To 3 : Curs Off
Screen Display 3,128,-120,320,138
Colour 17,0 : Colour 19,$FFF : Colour 18,0
Screen Copy 3,133,164,141,172 To 3,0,0
If SAV Then Screen Copy 3,133,138,169,150 To 3,3,122
Dim B(15,4),VERZ$(4),INS$(4),MAPGU(4),FILES(32),NOM(32),C(48)
Restore
For A=1 To 15
Read B(A,0),B(A,1),B(A,2),B(A,3)
Next
For A=0 To 48
Read C(A)
Next
VERZ$(1)="FIREPOWER:MapP1" : INS$(1)="PLEASE INSERT FIREPOWER IN ANY DRIVE!" : MAPGU(1)=5
VERZ$(2)="FIREPOWER:MapP2" : INS$(2)=INS$(1) : MAPGU(2)=5
VERZ$(3)="FIREPOWER:MapP3" : INS$(3)=INS$(1) : MAPGU(3)=1
VERZ$(4)="DF0:" : INS$(4)="PLEASE INSERT A MAP-DISK IN DF0:" : MAPGU(4)=0
A=VERZ : Gosub PRESS
For A=-120 To 40 Step 5
Screen Display 3,128,A,320,138 : Wait Vbl
Next
Screen Hide 1
Limit Mouse 128,40 To 447,177 : Show
Gosub REDDIR
Do
BUT=0 : X=X Mouse-128 : Y=Y Screen(3,Y Mouse) : M=Mouse Key
If M=1 Then Gosub CHKBUTTON
If BUT and SWP=0 Then T$="OK" : Gosub STATUS
If(BUT>0 or M=2) and SWP Then SWP=0 : A=10 : Gosub REALIZE : T$="SWAPPING ABORTED!" : Gosub STATUS
If BUT=0 and M and X>7 and X<300 and Y>31 and Y<96 Then Gosub CHGFIL
If BUT and BUT<5 Then Gosub NEWDIR
If BUT=5 Then Gosub SLIDER
If BUT=8 and FILES(OLFI)<>0 Then Gosub SURE : If M=2 Then Exit
If BUT=9 and FILES(OLFI)<OLFI Then T$="CAN'T DELETE PSEUDO MAP!" : Gosub STATUS : BUT=0
If BUT=9 and FILES(OLFI)<=MAPGU(VERZ) and OLFI>0 Then T$="CAN'T DELETE GAME MAP!" : Gosub STATUS : BUT=0
If BUT=10 and FILES(OLFI)<OLFI Then T$="CAN'T SWAP PSEUDO MAP!" : Gosub STATUS : BUT=0
If BUT=11 and FILES(OLFI)<OLFI Then T$="CAN'T SHOW PSEUDO MAP!" : Gosub STATUS : BUT=0
If BUT>7 and BUT<12 and OLFI=0 Then T$="NO MAP SELECTED!" : Gosub STATUS : BUT=0
If BUT=12 and OLFI=0 Then T$="DRAWER EMPTY!" : Gosub STATUS : BUT=0
If BUT=13 Then OLFI=0 : Exit
If BUT=9 Then Gosub DELETE
If BUT=10 Then OLSW=OLFI : A=10 : Gosub PRESS : SWP=1 : T$="CLICK ON MAP TO BE SWAPPED!" : Gosub STATUS
If BUT=11 Then Gosub SHOMAP
If BUT=12 Then Gosub SHOALL
Repeat : Until Mouse Key=0 or BUT=0
Loop
Hide
Screen Show 1
For A=40 To -120 Step -5
Screen Display 3,128,A,320,138 : Wait Vbl
Next
Screen Close 3 : Show
If OLFI>0 Then T$="T"+Str$(Abs(FILES(OLFI)))-" " Else T$=""
Goto AUS
SHOALL:
Hide
Screen Open 4,320,296,8,0
Paper 0 : Curs Off : Flash Off : Cls 0
Get Palette 3 : Colour 6,$B61 : Colour 5,$60
For Y=290 To 40 Step -10
Screen Display 4,128,Y,320,256 : Wait Vbl
Next
Screen Hide 3
XX=8 : YY=8 : M=1
Erase 15 : Reserve As Chip Work 15,4096
For A=1 To Min(FIL,12)
If FILES(A)>0 Then Gosub SHOMAP2
If M Then Exit
Next
If M=0 Then Repeat : Until Mouse Key
Repeat : Until Mouse Key=0
Erase 15
Screen Show 3
For Y=40 To 290 Step 10
Screen Display 4,128,Y,320,256-(Y-40) : Wait Vbl
Next
Screen Close 4
Show
Return
SHOMAP2:
Ink 7 : Bar XX,YY To XX+63,YY+63
If Exist(VERZ$(VERZ))=0 Then INSERT[VERZ$(VERZ),INS$(VERZ)]
Bload "T"+Str$(FILES(A))-" ",15
Paper 0 : Pen 1 : Locate XX/8+2,YY/8+8 : Print Str$(FILES(A));
For Y=0 To 63
For X=0 To 63
M=Mouse Key
C=U(Peek(Start(15)+X*64+Y))
If C>3 Then Plot XX+X,YY+Y,C(C)
If M Then Exit
Next
If M Then Exit
Next
Add XX,80 : If XX=328 Then XX=8 : Add YY,80
Return
SHOMAP:
Ink 7 : Bar 235,32 To 298,95
Erase 15 : Reserve As Chip Work 15,4096
If Exist(VERZ$(VERZ))=0 Then INSERT[VERZ$(VERZ),INS$(VERZ)]
Bload "T"+Str$(FILES(OLFI))-" ",15
For Y=0 To 63
For X=0 To 63
C=U(Peek(Start(15)+X*64+Y))
If C>3 Then Plot 235+X,32+Y,C(C)
Next
Next
Erase 15
Return
SURE:
Bell
Screen Copy 3,91,48,224,91 To 3,133,138
Screen Copy 3,0,138,133,181 To 3,91,48
Repeat : Until Mouse Key=0 : A=15
C=0
Repeat
M=Mouse Key : Wait Vbl : Add C,1,0 To 49
If C=25 Then Gosub PRESS
If C=0 Then Gosub REALIZE
Until M>0
Gosub PRESS
Screen Copy 3,133,138,266,181 To 3,91,48
Return
DELETE:
Gosub SURE : If M<>2 Then T$="FUNCTION ABORTED!" : Goto STATUS
If Exist(VERZ$(VERZ))=0 Then INSERT[VERZ$(VERZ),INS$(VERZ)]
ERN=0 : Kill "T"+Str$(OLFI)-" " : If ERN Then T$="UNABLE TO DELETE FILE!" : Goto STATUS
Gosub REDDIR
Return
SLIDER:
If FIL<9 Then Return
OO=O : YA=0
Repeat
Repeat
Y=Y Screen(3,Y Mouse)
YY=Min(Max(Y-G/2,48),79-G)
O=Min(((YY-48+G/2)*Max(FIL-7,1))/31,FIL-8)
Until YA<>YY or Mouse Key=0
YA=YY
Wait Vbl : Ink 2 : Bar 307,47 To 312,80
Ink 1 : Draw 307,YY To 311,YY : Draw 307,YY To 307,YY+G-1
Ink 3 : Draw 312,YY+G To 308,YY+G : Draw 312,YY+G To 312,YY+1
If OO<>O Then OO=O : Gosub UPDATFILES
Until Mouse Key=0
Gosub UPDATSLID
Return
UPDATFILES:
For A=1+O To 8+O
Locate 1,3+A-O
Gosub MAPCOM
Next
Return
UPDATSLID:
Ink 2 : Bar 307,48 To 312,80
G=Max(31/Max(FIL-7,1),2) : YY=48+(O*31)/Max(FIL-7,1)
Ink 1 : Draw 307,YY To 311,YY : Draw 307,YY To 307,YY+G-1
Ink 3 : Draw 312,YY+G To 308,YY+G : Draw 312,YY+G To 312,YY+1
Return
SCRUP:
If O<1 Then Return
Screen Copy 3,8,32,220,88 To 3,8,40
Dec O : B=A : A=O+1
Locate 1,4
Gosub MAPCOM
Gosub UPDATSLID : A=B
Return
SCRDOWN:
If FIL<O+9 Then Return
Screen Copy 3,8,40,220,96 To 3,8,32
Inc O : B=A : A=O+8
Locate 1,11
Gosub MAPCOM
Gosub UPDATSLID : A=B
Return
CHGFIL:
YY=Y/8-3 : If YY+O>FIL Then Return
If YY+O=OLFI Then Return
If OLFI>O+8 or OLFI<O Then OLFI=O+1
Locate 1,3+OLFI-O
A=OLFI : OLFI=0 : Gosub MAPCOM
OLFI=YY+O
Locate 1,3+OLFI-O
A=OLFI : Gosub MAPCOM
If SWP=1 Then Gosub XCHGFIL : SWP=0 : A=10 : Gosub REALIZE
Return
XCHGFIL:
If FILES(OLFI)<0 Then T$="SWAPING ABORTED!" : Gosub STATUS : Return
Gosub SURE
If M<>2 Then T$="FUNCTION ABORTED!" : Gosub STATUS : Return
T$="SWAPPING! PLEASE WAIT!" : Gosub STATUS
If Exist(VERZ$(VERZ))=0 Then INSERT[VERZ$(VERZ),INS$(VERZ)]
ERN=0 : Rename "T"+Str$(FILES(OLFI))-" " To "TSWAP"
If ERN Then T$="ERROR SWAPPING FILE!" : Goto STATUS
Rename "T"+Str$(FILES(OLSW))-" " To "T"+Str$(FILES(OLFI))-" "
Rename "TSWAP" To "T"+Str$(FILES(OLSW))-" "
T$="SWAPPING COMPLETE!"
STATUS:
Ink 2 : Bar 65,112 To 317,121
Gr Writing 0 : Ink 3,2 : Text 66,119,T$+Space$(32-Len(T$))
Ink 1,2 : Text 65,118,T$
Return
NEWDIR:
If BUT=VERZ Then Return
Shoot : A=VERZ : Gosub REALIZE
A=BUT : VERZ=BUT : Gosub PRESS
Repeat : Until Mouse Key=0
Gosub REDDIR
Return
REDDIR:
T$="READING DIR..." : Gosub STATUS
Ink 2 : Bar 5,32 To 220,96
If Exist(VERZ$(VERZ))=0 Then INSERT[VERZ$(VERZ),INS$(VERZ)]
Dir$=VERZ$(VERZ)
FRE=Dfree/488/2
Ink 2 : Bar 161,101 To 317,110
Gr Writing 0 : Ink 3,2 : Text 161,109,Str$(FRE)-" "
Ink 1,2 : Text 160,108,Str$(FRE)-" "
FIL=0 : O=0 : Gosub UPDATSLID
For A=1 To 32 : NOM(A)=0 : Next
B=0
For A=1 To 32
FILES(A)=-A
If Exist("T"+Str$(A)-" ") Then Inc FIL : FILES(FIL)=A : Gosub UPDATSLID Else Inc B : NOM(B)=A
Next
For A=FIL+1 To 32
FILES(A)=-NOM(A-FIL)
Next
If FIL=0 Then T$="NO MAP FOUND!"
If FIL=1 Then T$="1 MAP FOUND!"
If FIL>1 Then T$=Str$(FIL)-" "+" MAPS FOUND!"
Gosub STATUS
If SAV Then FIL=Min(FIL+FRE,32)
Pen 3 : Paper 2
OLFI=Min(FIL,OLFI)
If FIL=0 Then Return
OLFI=Max(1,OLFI)
For A=1 To Min(FIL,8)
Locate 1,3+A
Gosub MAPCOM
Next
Gosub UPDATSLID
Return
MAPCOM:
Pen 3-(OLFI=A) : Print Abs(FILES(A));" ";At(8,);"*";
If Abs(FILES(A)<=MAPGU(VERZ)) Then Pen 5 : A$="GAME USED MAP!"
If Abs(FILES(A)>MAPGU(VERZ)) and FILES(A)>0 Then Pen 7 : A$="SPARE MAP! "
If FILES(A)<0 Then Pen 6 : A$="NO MAP! "
If OLFI=A Then Pen 4
Print A$
Return
CHKBUTTON:
BUT=0
For A=1 To 14
If X=>B(A,0) and X<=B(A,2) and Y=>B(A,1) and Y<=B(A,3) Then BUT=A : Exit
Next
If A<6 or A=15 Then Return
Shoot : Gosub PRESS
Repeat
If BUT=6 Then Gosub SCRUP : Wait Vbl
If BUT=7 Then Gosub SCRDOWN : Wait Vbl
Until Mouse Key=0
Gosub REALIZE
Return
PRESS:
If B(A,4)=1 Then Return
B(A,4)=1
Ink 3 : Draw B(A,0),B(A,1) To B(A,2)-1,B(A,1)
Draw B(A,0),B(A,1) To B(A,0),B(A,3)-1
Ink 1 : Draw B(A,2),B(A,3) To B(A,0)+1,B(A,3)
Draw B(A,2),B(A,3) To B(A,2),B(A,1)+1
Screen Copy 3,B(A,0)+2,B(A,1)+2,B(A,2),B(A,3) To 3,B(A,0)+1,B(A,1)+1
Return
REALIZE:
If B(A,4)=0 Then Return
B(A,4)=0
Ink 1 : Draw B(A,0),B(A,1) To B(A,2)-1,B(A,1)
Draw B(A,0),B(A,1) To B(A,0),B(A,3)-1
Ink 3 : Draw B(A,2),B(A,3) To B(A,0)+1,B(A,3)
Draw B(A,2),B(A,3) To B(A,2),B(A,1)+1
Screen Copy 3,B(A,0)+1,B(A,1)+1,B(A,2)-2,B(A,3)-2 To 3,B(A,0)+2,B(A,1)+2
Return
' Buttons
Data 3,16,87,28
Data 90,16,182,28
Data 185,16,269,28
Data 272,16,316,28
Data 305,46,314,81
Data 303,30,316,43
Data 303,84,316,97
Data 3,122,39,134
Data 42,122,94,134
Data 97,122,133,134
Data 136,122,172,134
Data 175,122,243,134
Data 246,122,298,134
Data 301,122,316,134
Data 91,48,223,90
' Colortable for Littlemap
Data 7,7,7,7,3,3,3,3,3,3,3,3,3,3,3
Data 2,2,2,6,6,6,6,6,6,6,6,6,6,6,6,6,6
Data 2,2,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5
AUS:
End Proc[T$]
Procedure INSERT[D$,T$]
Screen Open 5,320,9,2,0
Curs Off : Palette 0,0 : Paper 0 : Pen 1
Centre T$
Y=50 : SY=5 : Fade 1,0,$FFF : A=0
Do
If Y>128 Then Dec SY
If Y<128 Then Inc SY
Add Y,SY : Screen Display 5,128,Y+40,,7 : Wait Vbl
Add A,1,0 To 99 : If A=0 Then If Exist(D$) Then Exit
Loop
Print : Centre "THANX!!!"
For A=0 To 49
If Y>128 Then Dec SY
If Y<128 Then Inc SY
If A=33 Then Fade 1
Add Y,SY : Screen Display 5,128,Y+40,, : Wait Vbl
Next
Screen Close 5
End Proc
Procedure HANDLER
ERN=Errn
If ERN<>26 Then Resume Next
Amal Off
Sprite Off
Bob Off
For A=0 To 5
Screen Open A,128,8,2,0
Screen Close A
Next
Screen Open 0,320,200,4,0
Curs Off : Flash Off : Cls 0 : Paper 0 : Hide On
Double Buffer
Flash 1,"(FFF,32)(CCC,4)(999,4)(666,4)(999,4)(CCC,4)"
Flash 2,"(CCC,32)(999,4)(666,4)(333,4)(666,4)(999,4)"
Flash 3,"(999,32)(666,4)(333,4)(000,4)(333,4)(666,4)"
A$="L R0=0; L R1=0; L R2=20; L R3=0; "
F$="L R0=1280; L R1=1000; L R2=-30; L R3=30; "
B$="A: P; L R0=R0+R2; L R1=R1+R3; L X=R0/10; L Y=R1/10; L R3=R3+1; "
B$=B$+" I R1>1800 J B; "
B$=B$+"C: I R0<0 J L; "
C$=" I R0>1680 J L; "
D$=" Jump A;"
D$=D$+"B: L R3=1-R3; L R4=1; J C; "
D$=D$+"L: L R2=0-R2; L R4=2; J A; "
E$=" I R0>1280 J L; "
Bob 0,0,-10,9
Bob 1,0,-10,10
Channel 0 To Bob 0
Channel 1 To Bob 1
Amal 0,A$+B$+C$+D$
Amal 1,F$+B$+E$+D$
Amal On
Repeat
If Amreg(0,4)=1 Then Amreg(0,4)=0 : Play 1,13,0
If Amreg(0,4)=2 Then Amreg(0,4)=0 : Play 2,18,0
If Amreg(1,4)=1 Then Amreg(1,4)=0 : Play 4,20,0
If Amreg(1,4)=2 Then Amreg(1,4)=0 : Play 8,23,0
Until Mouse Key
Amal Off
Sprite Off
Screen Close 0
End
End Proc